package com.open.capacity.workflow.service;

import com.open.capacity.commons.Result;
import com.open.capacity.workflow.model.WFEngine.WFAuditorModel;
import com.open.capacity.workflow.model.WFEngine.WFContent;
import com.open.capacity.workflow.vo.WFParameter;

import java.util.List;


/**
 * @author 作者 ftquan 464725602@qq.com
 * @version 创建时间：2017年11月12日 上午22:57:51
 */
public interface WFEngineService {

    /**
     * 流程发起初始化接口
     *
     * @param parameter
     */
    Result<WFContent> bootstraper(WFParameter parameter);


    /**
     * 获取某个任务节点的信息
     *
     * @param parameter
     */
    Result<WFContent> getTaskInfo(WFParameter parameter);


    /**
     * 获取流程实例信息
     *
     * @param parameter
     */
    Result<WFContent> getProcessInfo(WFParameter parameter);


    /**
     * 获取流程实例信息(流程监控)
     *
     * @param parameter
     */
    Result<WFContent> getProcessInfoByMonitor(WFParameter parameter);


    /**
     * 创建流程实例
     *
     * @param parameter
     */
    Result<WFContent> create(WFParameter parameter);


    /**
     * 审核流程节点
     *
     * @param parameter
     */
    Result<WFContent> audit(WFParameter parameter);

    /**
     * 撤销审核
     *
     * @param parameter
     */
    Result<WFContent> revokeAudit(WFParameter parameter);


    /**
     * 获取下一个节点审核者信息
     *
     * @param parameter
     */
    Result<List<WFAuditorModel>> getAuditer(WFParameter parameter);

}
